from rest_framework.response import Response
from django.http import JsonResponse
from rest_framework import status

class BaseResponse:
    """
    统一的API响应格式类
    提供成功和错误响应的静态方法
    
    支持两种响应类型:
    1. REST framework Response (API视图默认)
    2. Django JsonResponse (适用于需要直接返回JSON的场景)
    """
    
    @staticmethod
    def success(data=None, message="操作成功"):
        """
        返回成功响应
        
        参数:
        - data: 响应数据 (可选)
        - message: 成功消息 (默认为"操作成功")
        
        返回:
        - Response对象，格式为{"status": "success", "message": message, "data": data}
        """
        return Response({
            "status": "success",
            "message": message,
            "data": data
        })
    
    @staticmethod
    def json_success(data=None, message="操作成功"):
        """
        返回成功的JsonResponse
        
        参数:
        - data: 响应数据 (可选)
        - message: 成功消息 (默认为"操作成功")
        
        返回:
        - JsonResponse对象，格式为{"status": "success", "message": message, "data": data}
        """
        return JsonResponse({
            "status": "success",
            "message": message,
            "data": data
        })

    @staticmethod
    def error(message="操作失败", status=status.HTTP_400_BAD_REQUEST):
        """
        返回错误响应
        
        参数:
        - message: 错误消息 (默认为"操作失败")
        - status: HTTP状态码 (默认为400)
        
        返回:
        - Response对象，格式为{"status": "error", "message": message}
        """
        return Response({
            "status": "error",
            "message": message
        }, status=status)
    
    @staticmethod
    def json_error(message="操作失败", status_code=400):
        """
        返回错误的JsonResponse
        
        参数:
        - message: 错误消息 (默认为"操作失败")
        - status_code: HTTP状态码 (默认为400)
        
        返回:
        - JsonResponse对象，格式为{"status": "error", "message": message}
        """
        return JsonResponse({
            "status": "error",
            "message": message
        }, status=status_code) 